Click here to Skip to main content
14,718,540 members
Articles » General Reading » CodeProject FAQs » General
Posted 8 Mar 2010

Tagged as


80 bookmarked

Code Project Article FAQ

Rate me:
Please Sign up or sign in to vote.
4.97/5 (51 votes)
17 Feb 2015CPOL
This is an FAQ for writing Code Project articles. It can be modified by any Silver member.

Table of Contents

Our new Layout

  1. Why the new layout?

    We needed to clean things up and make it easier to find your way around. This update is the start a series of staged site updates that will bring consistency to our various areas.

  2. I have found an issue (or suggestion) with the article layout. Who do I contact?

    Please visit our Bugs and Suggestions forum

Purpose of Sharing

  1. Why share my code?

    Sharing code with others is a great way to not only help others, but also to become a better programmer. With many thousands of people downloading your code you will not only get a lot of positive feedback, but also bug fixes, free testing, and more often than not, suggestions on how to make the code even better. It also encourages others to share their code, which in turn gives you access to an even larger base of free source code.

  2. What are the Terms of Use?

    If you post to The Code Project then your code is offered under the terms of our Terms of Use and under the specific license agreement attached to the article. You also agree to the Contributors Agreement, which ensures you have the right to post the content, allows us to actually publish your content, and provides further protection for you on top of the License you choose for your content.

Code Project Articles

  1. What does an article require?

    First and foremost, we need some documentation. This doesn't have to be anything fancy, though we don't mind if it is, but if you think about answering the following questions then you should be off to a good start.

    • What does the code do?
    • How do I integrate it with my existing code or how do I use it?
    • If there is a similar article on The Code Project already, then how does this one differ? Why would someone want to use your version?
    • Is there some aspect of the code that is of particular interest that perhaps should be covered in the article?
    • Are there any particular environments the code is restricted to? (Windows 2000 or above, .NET SP1 etc)
    • Are there articles about this topic already on Code Project? If so, what about mine offers something different. Please state what that difference is in the article.

    The idea is to give the reader a clear idea of the purpose of your code, instead of forcing them to download a project, build it and then hunt around to find out what the sample does. This means articles that are code snippets, with no explanation of what the snippet does, are insufficient.

  2. How do I prepare my source code?

    First and foremost, does the code actually work? We do sometimes get code that, for one reason or another, just does not work. Please check that the source code you send compiles cleanly, and if part of a larger demo application, that the application itself runs OK.

    We do ask that the general conventions for your language be adhered to so that other programmers can understand your code easily. Conventions that help other programmers read your code are:

    • The use of Hungarian notation in MFC (e.g. Variable prefixes such as "n" for int, "d" for double etc.)
    • The use of Win32/Visual C++ types such as UINT, LPCTSTR etc.
    • Camel case in .NET code

    Also, does the code compile cleanly under the warning level 4?

  3. How do I submit an article?

    You can submit the article and code to in one of three ways:

    1. You can submit the article yourself using our submission wizard.
    2. Through our submit[at] address. Article and code must be compressed into a .rar archive, or rename your zips to, say, MyArticle.nozip (Our email provider will not accept emails with .exe attachments, or .zips with .exe attachments)
    3. Through our online submission form, leaving your Article Title, your zip package, and comment for the editors (if required)

  4. Why submit to through the Code Project Editors?
    • Article checked for grammar, spelling, and punctuation
    • Article formatted correctly to Code Project Guidelines
    • Improved readability
    • Easier for author, no processing or using a submission tool, or messing with HTML
    • Article process time is typically 1-2 days

  5. Why submit into the submission queue?
    • Author doesn't have to rename their zip file, or EXE files for submission.
    • Article checked for grammar, spelling, and punctuation
    • Article formatted correctly to Code Project Guidelines
    • Improved readability
    • Theoretically, higher ratings
    • Easier for author, no processing or using a submission tool, or messing with HTML
    • Article process time is typically 1-2 days business days

  6. Why submit through the submission wizard?
    • Submitted immediately
    • May not follow Code Project format and submission guidelines
    • Might be less readable, and less accessible
    • Have to fuss with HTML and wizard yourself

  7. Where do I submit an article?

    From the home page, here:

    Image 1

  8. How do I choose my article's section?

    At the top of the Article Submission Wizard there is a Section dropdown:

    Image 2

    There are larger chapters, like Desktop Development, Web Development, Mobile Development, Cloud Computing, etc, and sections within those. Additionally, there is a subsection dropdown next to it on the right. Each article must have a section assigned to it. If you do not select one, the "Uncategorized Articles" will be chosen by default. Please choose the most appropriate section accordingly. If you have a section suggestion, please feel free to email us at submit[at]

  9. How is my article's URL decided?

    The URL of your article will depend on the title you give it. For example, if your title is 'coolcode' then your article's URL will be ''

    This name is important, as it helps search engines find your article. Make sure you name it something appropriate.

  10. What should I put in the description?

    300 characters or less (spaces included), on what your article's purpose. Be clear, and concise; it will decide whether or not someone reads your article.

  11. How do I use tags and location?

    Simply begin typing into the Tags field. As you type, a dropdown of current tags will be displayed. Select accordingly.


    Also note the secondary dropdown where you can scroll through lists of languages, platforms, technologies, and audiences that apply.

    ArticleFAQ/ParentAttributes.png Note: Some attributes are parent attributes. If you selecting C++ as shown, you are actually selecting all children: VC6, VC7, VC7.1, VC8.0,and VC9.0

    If you use the dropdown to select attributes, DO NOT check the parent attribute if all the children attributes do not apply

  12. What license should I use?

    We have a list of licenses here to help you choose the license appropriate for you and your code.

  13. What files should I upload?
    • Small screen shot (PNG/GIF/JPEG only, maximum width 640 pixels)
    • Zip file containing your source files (if appropriate)
    • Zip file containing your sample application (if appropriate)

    PLEASE NOTE: The only image files we accept are PNG, GIF, and JPG. Our article editor currently does not support SVG.

  14. How do I upload them?

    On the far right of the screen you will see an "Upload Files" heading. Below it you will see a dotted box that indicates "Drag and Drop Files Here." Simply drag and drop your files into that box, and its done!

    Image 5

  15. OK I uploaded my files. Where did my files go, and how do I use them?

    Each file can be added using the yellow arrow icon as shown below. Simply place the cursor in the article area where you want the file to be located, then click the arrow to place the image/file there.

    Image 6

    For zip files containing code there is a shortcut to adding files. Underneath "Current Files" you will see a insert button and link entitled "Add selected zip files to article." Simply click that link to automatically add neatly formatted files to your article.

    If you are adding files to the article without the button, you would do the following in the HTML:

    <ul class="download">
    <li><a href="">Download source - X KB</a>

    If you are adding images to the article without the button, you would simply do the following. (Note: It is important to keep paths within the href free of extraneous pathway. Simply add the filename inside the quotations).

    <img src="imagename.png" />
  16. I have to finish my article later. How can I do this and not lose my progress?

    Check this teenie, tiny box:

    Image 7

    And make sure you have saved your draft:

    Image 8

    Later when you come back check "My Articles" here:

    Later when you are ready to finish return to the submission page and access your draft from here:

    Image 9

  17. How do I use the article editor?
    You know HTML

    Knowing HTML is the ideal for the editor. Select the Source button to switch between HTML and WYSIWYG (What You See Is What You Get) modes. Please note, class designations (ie. table class="ArticleTable") have specific capitalization.

    Use this Source button to switch between the two modes:

    Image 10

    <p>Paragraphs go in paragraph tags.</p>
    <li>Unordered lists go in these tags</li>
    <code>All your variables, class names, properties, etc. must go inside</code>
    <strong>If you really want to bold something, use this tag. But we don't like it</strong>
    <em>All file names inside the article must be italicized: .zip, .cs, .html, etc.</em>
    <img src="imagename.png" />

    Headings must be used like this

    <h2>Main Headings</h2>
    <h3>Sub Heading to h2 Heading - a Sub Topic to the Previous Topic</h3>
    <h4>Sub Heading to h3 Heading - a Sub Topic to the Previous Topic</h4>
    <h5>Sub Heading to h4 Heading - a Sub Topic to the Previous Topic</h5>
    <div class="Caption">Captions go in this div class</div>
    <table class="ArticleTable">
    <td>Tables with borders. This cell a bolded and colorized border because of thead</td>
    <td>This cell in this row ALSO has a bolded and colorized border because of thead</td>
    <td>This cell in this row is not bolded and colorized</td>
    <td>Neither is this one</td>
    <table class="ArticleTableNoBorder">
    <td>This table has no borders</td>
    <td>This table has no borders</td>

    You don't need to worry about colorizing your articles. We have a colorizer that takes care of this for you. If your article already contains colorization then don't worry - the colorizer cleans out all previous colorizing before recolorizing the entire article

    <pre lang="cs">int myVar = 0;</pre>

    The currently supported languages are:

    • Plain Text (lang="text")
    • ASP.NET (lang="aspnet")
    • C# (lang="cs")
    • C++ (lang="C++")
    • C++/CLI (lang="mc++")
    • CSS (lang="css")
    • F# (lang="F#")
    • HTML (lang="html")
    • Java (lang="java")
    • Javascript (lang="jscript")
    • MASM / ASM (lang="asm")
    • MSIL (lang="msil")
    • MIDL (lang="midl")
    • PHP (lang="php")
    • SQL (lang="SQL")
    • VB.NET (lang="vbnet")
    • VBScript (lang="vbscript")
    • XML (lang="xml")
    • PowerShell (lang="PowerShell")
    • Python (lang="python")

    Other languages can be added on request.

    Colorizing works on PRE and CODE tags. If you have a block (or line) of text you don't wish to be coloured, set the lang value as "text".

    If you have the same code snippet shown in multiple languages (eg C# and VB versions of the same code) you can wrap multiple PRE blocks inside a <div class="code-samples"> and have the multiple code blocks appear in a tabbed form, similar to MSDN


    <div class="code-samples">
    <pre lang="C#">
    <pre lang="VB.NET">

    Just make sure you set the lang attribute correctly

    You DON'T know HTML

    You can paste your article into the editor and modify it using the buttons. ArticleFAQ/BoldButton.png Bold, ArticleFAQ/ImageButton.png Add Image, ArticleFAQ/CodeButton.png Indicate Code in Paragraphs as Variables, Class Names, Properties, ArticleFAQ/ListButtons.png Create Lists, ArticleFAQ/LinkButton.png Add Link, ArticleFAQ/RemoveFormattingButton.png Remove Automatic Formatting of Original Text Application (like Word), ArticleFAQ/TableButton.png Insert Table.

    There's also Cut, Paste, Redo, and Undo. Beyond these, we wouldn't recommend messing with other icons. Code Project articles have very simple formatting, which is the way we (and more importantly, members) like it.

  18. How do I update my article?

    Every article on Code Project can be modified by their author if they are logged in. Simply click on the "Update Article" link just under the title of the article.

    Image 18

    This will take you to the article editor where you can make your desired changes. Afterwards, your article will return to the "Articles Needing Approval" queue where members and editors will approve your changes.

    If you have trouble with HTML you can send your update to us. Please use the "Get Article’s HTML" from the link in the upper right hand corner of your article, click on this and then save the HTML for your article using the File | Save menu in your browser. Ignore the stuff at the top and bottom of your page - you will see "Article Starts" and "Article Ends" tags in the HTML that point to where the actual text for your article is. Strip out everything above and below these markers and edit the HTML directly. When you are finished please send both updated HTML and zipped sourced code to us at submit[at] Note: your article and code must be compressed into a .rar archive, or rename your zips to, say, MyArticle.nozip (Our email provider will not accept emails with .exe attachments, or .zips with .exe attachments). Also please remember to include the name of the article and its URL in the email body.

    If you only have a very small addition to make, or want to report spelling/grammar or link errors then you can just send these in as plain text.

  19. How do I embed video in my article?

    To add a video to your articles simply do the following

    <iframe style="height:250px;width:100%" src="//"></iframe>
    The article editor will show only a placeholder while viewing in WYSIWYG mode. The current list of supported video hosting sites are:
    • YouTube (,
    • Vimeo
    • Channel 9 (,
    • Vine (

    If you want to start a YouTube video at a specific time, add a ?start= as shown below:

    <iframe style="width:560px; height:315px" src=""></iframe>


    • Slideshare (
    And as a bonus extra.
    • JS Fiddle (

    Simply replace the src URL with the URL of the embedded resource, set the width/height, and we'll take it from there.

  20. Can I submit an article based on another person's work?

    It is OK to use others code as a base as long as you make it totally clear that some/most of the code isn't yours. If you use someone else's code then DO NOT remove their copyright notices. There is a lot of code reuse here, that's the point after all. As far as the articles that are being posted here we expect to see credit where credit's due, in the code and the HTML as appropriate.

    If you are submitting a modification, extension or correction to another persons work then we ask that you attempt to contact the original author first and then try to liaise with him/her to produce an update to the original article. This way we can retain continuity with the original article as well as reducing the number of completely new pages that need posting.

    We take plagiarism seriously at The Code Project. If you copy someone else's work (whole or even a tiny part) without referencing it, OR you cut and paste large sections and simply post a reference link at the bottom, your post will be removed, and your account and articles may be forfeit.

    For further information on how to properly reference material, or an explanation of what plagiarism is, please see our Plagiarism FAQ.

  21. Can I submit code I've already posted at another site?

    You are more than welcome to submit code that is already published at another site, provided you own the copyright on that article, and provided you have not given the other site exclusive rights to your article.

  22. Why is there content moderation at the CodeProject?

    Certain user-submitted content on the site is subject to moderation. The purpose of moderation is to stop the publication of obviously inappropriate material, plagiarised content or content that is not of sufficient quality to be published at that point.

    Moderation is available to members who have contributed enough to the community that the system considers them a good judge of what is and isn't acceptable. If you suddenly find moderation buttons available to you then thank you - you've done a lot for the community and we would now like to give you the opportunity to do even more.

    If you have either an author reputation of Gold or higher, an Authority reputation of Gold or higher, an Editor reputation of Gold or higher or an Organiser reputation of Gold or higher, you will have access to the moderation queue. It looks like this:

    Image 19

    From there you can hover over the checkbox to get the following dropdown:

    Image 20

    The way the moderation works is you have to receive five "Approve" items to be published, or five "Report / Needs help" items to reach a different article status. If five members Approve your article it will become live and available for all to see. If five members either "Report" or mark your article as "Needs help" your article status will become "Closed" and you will receive an email notification indicating who closed the article, why, and what to do:

    If you wish to revise and reopen your article based on the feedback from these members then simply go the "Edit article online" in the upper right hand corner:

    Image 21

    This will enable you to edit and update your article and will re-open your article for other members to enjoy.

    If an author has genuinely tried to provide a decent material, even if they may need some encouraging to improve it, then the item should be approved by moderators.

    If you are new a member with new moderating privileges and are looking for some guidance on how to moderate, please see Jochen Arndt's excellent rundown here:

  23. What is Pending status?

    Pending status means that an article is awaiting approval from the Code Project community. The vast majority of new articles on Code Project need a couple of tiny improvements because they do not sufficiently explain the code within the article. The goal of this is three-fold:

    1. It ensures that articles are detailed enough that the majority of users can learn the most from each article
    2. It ensures the highest quality of articles on Code Project
    3. It helps the author receive best response possible (highest ratings) on Code Project

  24. Why is my "Closed" article in "Composing" status now?

    Sometimes articles have great ideas but need a slightly different presentation. If your article is in Closed status, look to your article forum and take the advice of your peers to heart. Generally, your article probably needs to answer one of these questions better:

    • What problem does this solution solve?
    • How does this help someone else?
    • How does the code actually work?
    • What is going on inside the code snippets?

  25. Users are telling me to change my article submission to a tip. How do I do that?

    If you agree with the Code Project users that your submission is more of a Tip than an article you can change it using the article wizard. Simply make sure you are logged in then go to update your article using the icon in the upper right-hand corner:

    Image 22

    Then go to the Type of your post and change it on the drop down from Article to Tip as shown below:

    Image 23

    Then hit "Publish" and your Tip will now be in the submission queue for Tips.

  26. What is a Code Project Mentor?

    We have experienced authors who would be willing to help you with your article, to improve it, and help get it approved by the community. If we ask you if you want a Mentor and you say yes, we then submit your article to the Mentor Forum and hopefully one of our Mentors will assign themselves to it, and post helpful suggestions on your article's forum. You can talk discuss with them how to improve the article, and once they feel your article is ready, will make your article available to the community.

  27. I can't get the formatting right in my article. What do I do?

    Contact us at submit[at] We're happy to help

  28. My article was approved and all the votes and comments are gone. Why?

    Because most new articles require improvements, they receive comments that, once the article is approved, will no longer be relevant. They also receive multiple 1 votes which authors do not like, so we remove both comments and votes. It is permanent. This is also why you cannot reply to some of your initial comments if you were notified by e-mail.

  29. Are comments specific to an article revision?

    Comments are tied to specific versions in order to allow members to post comments while author's fine tune their article during the composition and approval process.

    An example is that you post a new article and it's in a Pending state while members approve it. A few members find fault with it, and you make those corrections, and then the article is approved. The comments related to corrections should not be included in the final published version of the article.

  30. I posted my article a year ago, and it is still unedited. Why?

    We only have limited staff to deal with thousands upon thousands of articles. We do our best to give them all some lovin', but the sad fact is there are too many. We work as hard as we can. If you can't wait, contact us at submit[at] so we can speed things up.

  31. I want to write an article on a third party product. Can I?

    We do not typically allow articles on Third Party Products and Tools. We will only allow articles on third party products at our discretion and provided the following rules are strictly followed:

    1. Must provide significant innovation and cannot simply be a how-to guide that would appear on the vendor's own help pages or must solve a significant problem common to users of the third party product or library
    2. Must not be an advertisement for the product. We are the final judges on this. There will be no mention of price, offers or coupons, upgrades, trials or anything that would induce or tempt a person to visit the third party site and download the product. This article is purely for those who already use the product.
    3. We reserve the right to replace any links to the product with search-engine unfriendly links. Articles must not be used to promote a product in any form, including SEO.
    4. Must be tagged "third-party"
    5. Must be in the Third Party Products and Tools section
    6. Articles tagged this way will not appear on the homepage or the newsletter
    7. Must not be written by anyone associated with the company. Self promotion is not allowed.
    8. Author must have written at least two articles NOT on third party products.

    Finally, we reserve the right to make the call on all articles pertaining to third party products. We may allow articles that do not adhere to one or more of the aforementioned rules, and we may reject articles that follow every rule -- each article is judged on a case by case basis. If you discover an article that does not follow these rules, either report the article as spam/abusive, or send us an email at

    We no longer allow reviews on third party products and tools.

  32. I see something wrong on someone's article, how do I report it?

    There is a flag in the top-right hand corner of each article if you are logged in. If you see an issue with an article, place your cursor on this flag to bring the following drop-down, then select the appropriate report from the list:

    Image 24

  33. How are articles chosen for the monthly competition?

    Each month we do a monthly competition for the best articles (as voted by the community) in six categories: C#, C++, Web Development, Database, Mobile, and Everything Else. The voting is visible on the home page for two weeks. We start the voting for a particular month's set of articles the following month. For example, we would run October's competition in November. We try to start the voting approximately one week after a new month begins to allow articles that were posted later in the previous month a chance to get some votes.

    Articles for the monthly competition are chosen primarily by article rating, article popularity, tags, and how appropriate the article is for the category. In some cases, for example, you may see an article that simply used a lot of C# code in the C# category, but ideally each article is focused as specifically as possible on its category. You can see how article rating is calculated here. Aricle popularity is calculated by:

    $Article Rating \times \left ( \log_{10}NumberOfVotes \right )$

    Tags are fairly self-explanatory. If you want to be considered for the C# category, you must have a C# related tag in your article. Other categories are a little more broad. For example, if you want to be considered for the Web Development cateogry, you must have at least one tag related to Web Development, like IIS, ASP.NET, Javascript, CSS, HTML, PHP, MVC, jQuery, HTML5, Knockout.js, AngularJS, etc.


  1. What is a tip?

    A Tips and Tricks post is a single problem, with a single solution, and a super-short write-up. Ideally you could consume it in under 30 seconds. Here is an example of a tip:

    Kendo UI NumericTextBox Enable/Disable Issue

  2. How do I post a tip?

    From the home page, here:

    Image 25

    Then change the dropdown on "Post your" to "Tip/Trick" and hit the "Start Writing" button. From here on out, everything is identical to submitting an article.


  1. What is a reference?

    A Reference article is a short (typically 1 page) article used to lookup common information such as tables (eg. ASCII tables, HTTP codes etc) or function or class explanations. Typically there will be few if any images, and no downloadable code (though both are possible if the author wishes)

  2. How do I post a reference?

    From the home page, here:

    Image 26

    Then change the dropdown on "Post your" to "Reference" and hit the "Start Writing" button. From here on out, everything is identical to submitting an article.



This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Sean Ewington
Technical Writer CodeProject
Canada Canada
Sean Ewington is the Content Manager for CodeProject.

His background in programming is primarily C++ and HTML, but has experience in other, "unsavoury" languages.

He loves movies, and likes to say inconceivable often, even if it does not mean what he thinks it means.

Comments and Discussions

QuestionLink from article to source code? Pin
Alexandros Pappas20-Jun-19 22:48
professionalAlexandros Pappas20-Jun-19 22:48 
QuestionGitHub Pin
Paula Scholz17-Oct-17 8:28
MemberPaula Scholz17-Oct-17 8:28 
AnswerRe: GitHub Pin
Chris Maunder25-Jun-19 7:18
cofounderChris Maunder25-Jun-19 7:18 
AnswerGood ! Pin
sosserrurierorleans4-Nov-16 18:28
Membersosserrurierorleans4-Nov-16 18:28 
QuestionRecently written article Pin
Rahul VB28-Oct-16 1:59
professionalRahul VB28-Oct-16 1:59 
AnswerRe: Recently written article Pin
Sean Ewington28-Oct-16 6:18
editorSean Ewington28-Oct-16 6:18 
GeneralRe: Recently written article Pin
Rahul VB28-Oct-16 6:44
professionalRahul VB28-Oct-16 6:44 
GeneralRe: Recently written article Pin
Sean Ewington28-Oct-16 6:46
editorSean Ewington28-Oct-16 6:46 
GeneralRe: Recently written article Pin
Rahul VB28-Oct-16 6:52
professionalRahul VB28-Oct-16 6:52 
GeneralMessage Closed Pin
14-Apr-17 20:33
Memberpuravidacream14-Apr-17 20:33 
QuestionWriting articles on testing Pin
Rahul VB27-Oct-16 11:13
professionalRahul VB27-Oct-16 11:13 
AnswerRe: Writing articles on testing Pin
Sean Ewington27-Oct-16 11:19
editorSean Ewington27-Oct-16 11:19 
GeneralRe: Writing articles on testing Pin
Rahul VB27-Oct-16 11:25
professionalRahul VB27-Oct-16 11:25 
GeneralRe: Writing articles on testing Pin
Sean Ewington27-Oct-16 11:28
editorSean Ewington27-Oct-16 11:28 
GeneralRe: Writing articles on testing Pin
Rahul VB27-Oct-16 11:36
professionalRahul VB27-Oct-16 11:36 
QuestionGood one Pin
Vignesh Mani20-Aug-16 3:55
professionalVignesh Mani20-Aug-16 3:55 
AnswerMessage Closed Pin
14-Apr-17 20:34
Memberpuravidacream14-Apr-17 20:34 
GeneralMy vote of 5 Pin
Akhil Mittal 1-Jul-15 4:33
mva Akhil Mittal 1-Jul-15 4:33 
QuestionCo-author- Questions Pin
Akhil Mittal 1-Jul-15 4:33
mva Akhil Mittal 1-Jul-15 4:33 
BugNot working link Pin
Anton Angelov19-Feb-15 9:45
MemberAnton Angelov19-Feb-15 9:45 
GeneralRe: Not working link Pin
Sean Ewington19-Feb-15 9:55
editorSean Ewington19-Feb-15 9:55 
GeneralRe: Not working link Pin
Anton Angelov19-Feb-15 10:17
MemberAnton Angelov19-Feb-15 10:17 
QuestionHow can i link to old articles Pin
Daniel 1131753520-Jan-15 14:21
MemberDaniel 1131753520-Jan-15 14:21 
GeneralAbout Professional member type Pin
Gaurav Aroraa27-Oct-14 13:34
professionalGaurav Aroraa27-Oct-14 13:34 
GeneralRe: About Professional member type Pin
Sean Ewington28-Oct-14 6:13
editorSean Ewington28-Oct-14 6:13 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.